1. Field of the Invention
This invention is related to the field of data communications and storage and, more particularly, to modifying system resources in response to application behavior.
2. Description of the Related Art
The ever expanding use of computing environments and electronic communications has resulted in an increased dependence of users on the availability of those environments. If an enterprise computing system goes down, or is otherwise unavailable, costs to the enterprise may be significant. Consequently, a number of techniques have arisen which are designed to ensure that a computing environment may detect and respond to problems without significantly impacting users. Computing environments which are configured to maintain consistent service for its users may be referred to as being “highly available”. Some of the characteristics which are frequently considered when defining a highly available network include protection of data (Reliability), continuous access to data (Availability), and techniques for allowing the correction of problems in a manner which only minimally impacts users (Serviceability). Collectively these characteristics are sometimes referred to as RAS.
While a variety of computing environment configurations have arisen which attempt to satisfy the RAS requirements described above, one such configuration which has become popular is the “cluster”. Generally speaking, a cluster is a collection of computing resources (or “nodes”) which may be treated as a single computing resource. Typically, each of the nodes within the cluster represent fully realized computing resources in and of themselves. For example, a very simple cluster may include two nodes. Each of the two nodes in this simple cluster may include their own processing and storage resources and may be fully capable of providing service to network users on its own. Consequently, if a single node in a multi-node cluster were to fail, computing operations may continue. Larger computing environment configurations may include clusters with hundreds of nodes, computing grids with thousands of nodes, or a variety of other configurations.
One technique for increasing system reliability and availability includes the use of replicated data storage. For example, a computing cluster may be configured to include a primary node and a secondary node with users generally using the primary node. In the event the primary node fails, the secondary node may take over. However, in order to ensure the user's data is available and up to date once the secondary node takes over, the cluster may be configured to replicate the data from the primary node to the secondary node in “real-time.” Generally speaking, replication entails first synchronizing a primary and secondary data volume to be identical, and subsequently reflecting all changes in data on the primary volume to the secondary volume. Typically, changes on the primary volume are reflected to the secondary volume by conveying writes on the primary volume to the secondary volume. While such techniques as replication may provide for greater reliability and availability, such techniques may also consume network, memory, or other resources. Consequently, replication may also negatively impact system performance.